package edu.ar.modulo3.servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import edu.ar.modulo3.model.AppConstants;
import edu.ar.modulo3.model.Usuario;
import edu.ar.modulo3.perist.dao.IUsuarioDAO;
import edu.ar.modulo3.perist.factory.BaseDAOFactory;

public class UserAuthenticationServlet extends HttpServlet {
		
	private static final long serialVersionUID = 5471840775593089198L;
	
	private IUsuarioDAO usuarioDAO;

	@Override
	public void init() throws ServletException {
		usuarioDAO = BaseDAOFactory.getInstance().getUsuarioDAO();		
	}
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		
		process( req, resp );
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		
		process( req, resp );
	}
	
	private void process(HttpServletRequest req, HttpServletResponse resp)
		throws ServletException, IOException {
		
		HttpSession session = req.getSession();
		
		Usuario usuario = new Usuario();
		
		usuario.setUsuario( req.getParameter("user") );
		usuario.setPassword( req.getParameter("pass") );
		
		usuario = usuarioDAO.userExist(usuario);
		
		RequestDispatcher rd = null;
		
		if ( usuario != null && usuario.getIdTipoUsuario() != null ) {
					
			session.setAttribute(AppConstants.USERSESSION, usuario);
			
			switch ( usuario.getIdTipoUsuario().intValue() )
			{
				case AppConstants.TIPO_CLIENTE_ID:
					rd = req.getRequestDispatcher("ListadoClienteServlet");
					break;
					
				case AppConstants.TIPO_EMPLEADO_ID:
					rd = req.getRequestDispatcher("ListadoEmpleadoServlet");
					break;	
			}			
			
		} else  {
			
			session.setAttribute(AppConstants.USERSESSION, null);
			rd = req.getRequestDispatcher("ServletError");
						
		}
		
		rd.forward(req, resp);
	}	
}
